package ELB816;

import java.util.ArrayList;

public interface target {

    short get_register_IR();

    short get_register_A();

    short get_register_F();

    short get_register_R0_0();

    short get_register_R1_0();

    short get_register_R2_0();

    short get_register_R3_0();

    short get_register_R0_1();

    short get_register_R1_1();

    short get_register_R2_1();

    short get_register_R3_1();

    short get_register_DPH();

    short get_register_DPL();

    short get_register_SPH();

    short get_register_SPL();

    short get_register_PCH();

    short get_register_PCL();

    short get_register_TPH();

    short get_register_TPL();

    void set_register_IR(short ir);

    void set_register_A(short a);

    void set_register_F(short f);

    void set_register_R0_0(short data_byte);

    void set_register_R1_0(short data_byte);

    void set_register_R2_0(short data_byte);

    void set_register_R3_0(short data_byte);

    void set_register_R0_1(short data_byte);

    void set_register_R1_1(short data_byte);

    void set_register_R2_1(short data_byte);

    void set_register_R3_1(short data_byte);

    void set_register_DPH(short data_byte);

    void set_register_DPL(short data_byte);

    void set_register_SPH(short data_byte);

    void set_register_SPL(short data_byte);

    void set_register_PCH(short data_byte);

    void set_register_PCL(short data_byte);

    void set_register_TPH(short data_byte);

    void set_register_TPL(short data_byte);

    ArrayList get_all_registers();

    short read_byte();

    void write_byte(short data_byte);

    ArrayList read_memory(short address_16, int length_n);

    void write_memory(int address_16, int length_n, ArrayList n_data_bytes);

    short read_port(short port_address);

    void write_port(short port_address, short data_byte);

    void set_mode(int mode_number);

    void set_breakpoint(int number, int address_16);

    void run_to_breakpoint();

    void step_into();

    void step_out_of();

    void step_over();

    void toggle_breakpoint(int number);

    void clear_breakpoints();

    void trigger_interrupt(short vector_8);

    void emulate_serial_in(short data_byte);

    int target_ready_query();

    ArrayList target_implementation_query();
}
